package cn.wokoba.trigger.tech;

import cn.wokoba.trigger.tech.fallstrategy.FallbackStrategy;
import cn.wokoba.trigger.tech.fallstrategy.Impl.DefaultFallbackStrategy;

import java.lang.annotation.*;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface AccessInterceptor {

    /** 用哪个字段作为拦截标识*/
    String key();

    /** 限制频次（每秒请求次数） */
    double permitsPerSecond();

    /** 黑名单拦截（多少次限制后加入黑名单）0 不限制 */
    double blacklistCount() default 0;

    /** 拦截策略类 */
    Class<? extends FallbackStrategy> fallbackMethod() default DefaultFallbackStrategy.class;

    /** 超时时间（单位：秒） */
    long timeout() default 1L;

}
